home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 94 / 094.d81 / source.sda / BIG BOX SOURCE < prev    next >
Text File  |  2022-08-26  |  12KB  |  1,272 lines

  1.  
  2. open =$ffc0
  3. readst =$ffb7
  4. setlfs =$ffba
  5. setnam =$ffbd
  6. setmsg =$ff90
  7. load =$ffd5
  8. getin =$ffe4
  9. input'buffer =512
  10. clrchn =$ffcc
  11. close =$ffc3   ;a
  12. chrin =$ffcf
  13. chkout =$ffc9  ;x
  14. chkin =$ffc6   ;x
  15. plot =$fff0
  16. chrout =$ffd2
  17. color'pointer =243
  18. screen'line'pointer =209
  19. print'number =$bdcd ;x,a
  20. clear'line =59903
  21. background =53281
  22. border =53280
  23. strout = $ab1e; .A low .Y high
  24. unlisten =$ffae
  25. clall =$ffe7
  26. color1 =53282
  27. color2 =53283
  28. color3 =53284
  29. white =5
  30. crsr'down =17
  31. rvs'on =18
  32. home =19
  33. del =20
  34. red =28
  35. crsr'right =29
  36. green =30
  37. blue =31
  38. black =144
  39. lowercase =14
  40. uppercase =142
  41. crsr'up =145
  42. rvs'off =146
  43. clr =147
  44. insert =148
  45. brown =149
  46. light'red =150
  47. dark'grey =151
  48. medium'grey =152
  49. light'green =153
  50. light'blue =154
  51. light'grey =155
  52. purple =156
  53. crsr'left =157
  54. yellow =158
  55. cyan =159
  56. top'left =176
  57. top'right =174
  58. bottom'left =173
  59. bottom'right =189
  60.  
  61. .org $c000
  62. .obj "@0:big box c000"
  63. ;mem
  64. jmp menu'entry
  65. jmp box'entry  ;     +3
  66. jmp screen'stash;    +6
  67. jmp screen'restore;  +9
  68. jmp linx;            +12
  69. jmp print'at;        +15
  70. jmp center;          +18
  71. jmp ucase;           +21
  72. jmp lcase;           +24
  73. jmp fcase;           +27
  74. jmp bload;           +30
  75. jmp rload;           +33
  76. jmp pfill;           +36
  77. jmp p2fill;          +39
  78. jmp brancher;        +42
  79. jmp bput;            +45
  80. jmp rbput;           +48
  81. jmp dir;             +51
  82. jmp doodle;          +54
  83. jmp reader;          +57
  84. jmp char'repeat;     +60
  85.  
  86.  
  87. ;***sys addr,x,to x,y,to y,s-code,color
  88.  
  89. box'entry lda #0
  90. sta temp
  91. - jsr get'number
  92. ldy temp
  93. sta parms,y
  94. inc temp
  95. cpy #5
  96. bne -
  97.  
  98. fill'box jsr linx
  99. lda 214
  100. pha
  101. lda 211
  102. pha
  103. box'start ldx parms+2
  104. ldy #0
  105. clc
  106. jsr $fff0
  107. jsr old'rom'patch
  108. dec parms
  109.  
  110. - ldy parms+1
  111. - lda parms+4
  112. cmp #255
  113. beq +
  114. sta (209),y
  115. + lda parms+5
  116. sta (243),y
  117. dey
  118. cpy parms
  119. bne -
  120. lda 214
  121. cmp parms+3
  122. beq +
  123.  
  124. inc 214
  125. jsr 58732
  126. jsr old'rom'patch
  127. jmp --
  128. + lda #home
  129. jsr $ffd2
  130. pla
  131. sta 211
  132. pla
  133. sta 214
  134. jmp 58732
  135.  
  136. linx ldy #24
  137. - lda 217,y
  138. ora #128
  139. sta 217,y
  140. dey
  141. bpl -
  142. rts
  143.  
  144. screen'stash sec
  145. jsr plot
  146. stx menuy
  147. sty menux1
  148.  
  149. jsr get'number
  150. sta 252
  151. cmp >1024
  152. bcs +
  153. rts
  154.  
  155. + clc
  156. adc #4
  157. sta 254
  158. lda #0
  159. sta 253
  160. sta 251
  161.  
  162. lda #home
  163. jsr chrout
  164. jsr old'rom'patch
  165. sei
  166. lda #0
  167. sta 1
  168.  
  169. ldx #3
  170. ldy #0
  171. - lda (209),y
  172. sta (251),y
  173. dec 1
  174. lda (243),y
  175. inc 1
  176. sta (253),y
  177. iny
  178. bne -
  179. inc 210
  180. inc 252
  181. inc 244
  182. inc 254
  183. dex
  184. bpl -
  185. dec 254
  186. ldy #233
  187. dec 1
  188. lda 53280
  189. inc 1
  190. sta (253),y
  191. iny
  192. dec 1
  193. lda 53281
  194. inc 1
  195. sta (253),y
  196. iny
  197. lda menuy
  198. sta (253),y
  199. iny
  200. lda menux1
  201. sta (253),y
  202. lda #$77
  203. sta 1
  204. cli
  205. ldy menux1
  206. ldx menuy
  207. clc
  208. jmp plot
  209.  
  210. screen'restore jsr get'number
  211. sta 252
  212. clc
  213. adc #4
  214. sta 254
  215. lda #0
  216. sta 253
  217. sta 251
  218.  
  219. lda #home
  220. jsr chrout
  221. jsr old'rom'patch
  222. sei
  223. lda #0
  224. sta 1
  225.  
  226. ldx #3
  227. ldy #0
  228.  
  229. - lda (251),y
  230. sta (209),y
  231. lda (253),y
  232. dec 1
  233. sta (243),y
  234. inc 1
  235. iny
  236. bne -
  237. inc 210
  238. inc 252
  239. inc 244
  240. inc 254
  241. dex
  242. bpl -
  243. dec 254
  244. ldy #233
  245. lda (253),y
  246. dec 1
  247. sta 53280
  248. iny
  249. inc 1
  250. lda (253),y
  251. dec 1
  252. sta 53281
  253. inc 1
  254. iny
  255. lda (253),y
  256. sta 214
  257. iny
  258. lda (253),y
  259. sta 211
  260. lda #$77
  261. sta 1
  262. cli
  263. jmp 58732
  264.  
  265. menu'entry lda #0
  266. sta temp
  267. sta flag
  268. - jsr get'number
  269. ldy temp
  270. sta menuy,y
  271. inc temp
  272. cpy #6
  273. bne -
  274.  
  275. menu jsr linx
  276. ldx menuy
  277. ldy #0
  278. sty menu'current
  279. clc
  280. jsr plot
  281. jsr old'rom'patch
  282.  
  283. lda menu'highlight
  284. sta mcolor
  285. jsr paint'line
  286.  
  287. menu'wait jsr getin
  288. beq menu'wait
  289.  
  290. ldx menu'current
  291. stx temp
  292.  
  293. cmp #crsr'down
  294. beq menu'down
  295.  
  296. cmp #crsr'up
  297. beq menu'up
  298.  
  299. cmp #13
  300. beq menu'select
  301.  
  302. cmp exit'key
  303. bne menu'wait'loop
  304. dec flag
  305. bmi menu'select
  306.  
  307. menu'wait'loop jmp menu'wait
  308.  
  309. menu'down inc menu'current
  310. lda menu'current
  311. cmp menu'items
  312. bne highlight
  313. lda #0
  314. sta menu'current
  315. jmp highlight
  316.  
  317. menu'up dec menu'current
  318. lda menu'current
  319. cmp #255
  320. beq +
  321. jmp highlight
  322.  
  323. + ldy menu'items
  324. dey
  325. sty menu'current
  326. jmp highlight
  327.  
  328. menu'select lda menu'current
  329. clc
  330. adc menuy
  331. tax
  332. ldy #0
  333. jsr plot
  334. jsr old'rom'patch
  335.  
  336. lda menu'text
  337. sta mcolor
  338. jsr paint'line
  339.  
  340. bit flag
  341. bmi +
  342. lda menu'current
  343. clc
  344. adc #49
  345. sta 631
  346. lda #1
  347. sta 198
  348. + rts
  349.  
  350. highlight lda menuy
  351. clc
  352. adc menu'current
  353. tax
  354. ldy #0
  355. clc
  356. jsr plot
  357. jsr old'rom'patch
  358. lda menu'highlight
  359. sta mcolor
  360. jsr paint'line
  361.  
  362. lda menuy
  363. clc
  364. adc temp
  365. tax
  366. ldy #0
  367. clc
  368. jsr plot
  369. jsr old'rom'patch
  370. lda menu'text
  371. sta mcolor
  372. jsr paint'line
  373.  
  374. jmp menu'wait
  375.  
  376. paint'line ldy menux1
  377. - lda mcolor
  378. sta (243),y
  379. bmi +
  380. lda (209),y
  381. eor #128
  382. sta (209),y
  383. + iny
  384. cpy menux2
  385. beq -
  386. bcc -
  387. rts
  388.  
  389. ;**** get number from BASIC ****
  390.  
  391. get'number jsr $aefd
  392. jsr $ad8a
  393. jsr $b7f7
  394. lda $14  ; got low byte
  395. rts
  396.  
  397.  
  398. ;***** get string from BASIC ****
  399.  
  400. get'string jsr $aefd
  401. jsr $ad9e
  402. jsr $b6a3
  403.  
  404. ldx $22
  405. ldy $23
  406. rts
  407.  
  408. print'at jsr linx
  409. jsr get'number
  410. sta 211
  411. jsr get'number
  412. sta 214
  413. jsr 58732
  414. jsr get'string
  415. sta temp
  416.  
  417. print'string ldy #0
  418. - lda ($22),y
  419. jsr chrout
  420. iny
  421. cpy temp
  422. bne -
  423. rts
  424.  
  425. ucase jsr get'string
  426. sta temp
  427. ldy #0
  428. - lda ($22),y
  429. cmp #65
  430. bcc +
  431. ora #128
  432. sta ($22),y
  433. + iny
  434. cpy temp
  435. bne -
  436. rts
  437.  
  438. lcase jsr get'string
  439. sta temp
  440. ldy #0
  441. - lda ($22),y
  442. and #127
  443. sta ($22),y
  444. iny
  445. cpy temp
  446. bne -
  447. rts
  448.  
  449. fcase lda #255
  450. sta flag
  451. jsr get'string
  452. sta temp
  453. ldy #0
  454. lda ($22),y
  455. cmp #65
  456. bcc +
  457. ora #128
  458. sta ($22),y
  459. + iny
  460. lda #0
  461. sta flag
  462. ldy #1
  463. - lda ($22),y
  464. and #127
  465. sta ($22),y
  466.  
  467. cmp "."
  468. bne +
  469. dec flag
  470. + cmp "!"
  471. bne +
  472. dec flag
  473. + cmp "?"
  474. bne +
  475. dec flag
  476.  
  477. + bit flag
  478. bmi +
  479. iny
  480. cpy temp
  481. bne -
  482. rts
  483.  
  484. + cmp #65
  485. bcc +
  486. ora #128
  487. sta ($22),y
  488. inc flag
  489. + iny
  490. cpy temp
  491. bne -
  492. rts
  493.  
  494. center jsr get'number
  495. tax
  496. ldy #0
  497. clc
  498. jsr plot
  499.  
  500. jsr get'string
  501. sta temp
  502.  
  503. lsr
  504. sta flag
  505. lda #20
  506. sec
  507. sbc flag
  508. sta 211
  509. jsr 58732
  510. jmp print'string
  511.  
  512. bload jsr get'string
  513. jsr setnam
  514. jsr get'number
  515. tax
  516. lda #1
  517. ldy #0
  518. jsr setlfs
  519. jsr get'number
  520. ldx $14
  521. ldy $15
  522. lda #0
  523. jmp load
  524.  
  525. rload jsr get'string
  526. jsr setnam
  527. jsr get'number
  528. tax
  529. lda #2
  530. ldy #2
  531. jsr setlfs
  532. jsr open
  533. jsr get'number
  534. jsr clrchn
  535. ldx #2
  536. jsr chkin
  537.  
  538. ldy #0
  539. - jsr getin
  540. sei
  541. ldx #$74
  542. stx 1
  543. sta ($14),y
  544. inc $14
  545. bne +
  546. inc $15
  547.  
  548. + ldx #$77
  549. stx 1
  550. cli
  551.  
  552. jsr readst
  553. and #64
  554. beq -
  555.  
  556. lda #2
  557. jsr close
  558. jmp clrchn
  559.  
  560. pfill lda #0
  561. sta temp
  562. - jsr get'number
  563. ldy temp
  564. sta parms,y
  565. inc temp
  566. cpy #7
  567. bne -
  568.  
  569. pfill'box jsr linx
  570. lda 214
  571. pha
  572. lda 211
  573. pha
  574. pbox'start lda #147
  575. jsr chrout
  576. jsr old'rom'patch
  577. ldy #0
  578. sty temp
  579.  
  580. - ldy #0
  581. - lda parms
  582. sta (209),y
  583. lda parms+4
  584. sta (243),y
  585. iny
  586. lda parms+1
  587. sta (209),y
  588. lda parms+5
  589. sta (243),y
  590. dey
  591. jsr q3
  592. iny
  593. iny
  594. cpy #39
  595. bcc -
  596. lda 214
  597. cmp #22
  598. bcs +
  599.  
  600. inc 214
  601. inc 214
  602. jsr 58732
  603. jsr old'rom'patch
  604. jmp --
  605. + jsr fix'bottom
  606. pla
  607. sta 211
  608. pla
  609. sta 214
  610. jmp 58732
  611.  
  612.  
  613. q3 lda 209
  614. clc
  615. adc #40
  616. sta 251
  617. lda #0
  618. adc 210
  619. sta 252
  620. lda 243
  621. clc
  622. adc #40
  623. sta 253
  624. lda 244
  625. adc #0
  626. sta 254
  627. lda parms+2
  628. sta (251),y
  629. lda parms+6
  630. sta (253),y
  631. iny
  632. lda parms+3
  633. sta (251),y
  634. lda parms+7
  635. sta (253),y
  636. dey
  637. rts
  638.  
  639. fix'bottom lda #22
  640. sta 214
  641. jsr 58732
  642. jsr old'rom'patch
  643.  
  644. lda 209
  645. clc
  646. adc #80
  647. sta 251
  648. lda #0
  649. adc 210
  650. sta 252
  651. lda 243
  652. clc
  653. adc #80
  654. sta 253
  655. lda #0
  656. adc 244
  657. sta 254
  658.  
  659.  
  660. ldy #39
  661. - lda (209),y
  662. sta (251),y
  663. lda (243),y
  664. sta (253),y
  665. dey
  666. bpl -
  667. rts
  668.  
  669. p2fill lda #0
  670. sta temp
  671. - jsr get'number
  672. ldy temp
  673. sta parms,y
  674. inc temp
  675. cpy #17
  676. bne -
  677.  
  678. p2fill'box jsr linx
  679. lda 214
  680. pha
  681. lda 211
  682. pha
  683. p2box'start lda #147
  684. jsr chrout
  685. jsr old'rom'patch
  686. ldy #0
  687. sty temp
  688.  
  689. - ldy #0
  690. - lda parms
  691. sta (209),y
  692. lda parms+9
  693. sta (243),y
  694. iny
  695. lda parms+1
  696. sta (209),y
  697. lda parms+10
  698. sta (243),y
  699. iny
  700. lda parms+2
  701. sta (209),y
  702. lda parms+11
  703. sta (243),y
  704. dey
  705. dey
  706. jsr q4
  707. iny
  708. iny
  709. iny
  710. cpy #37
  711. bcc -
  712. lda 214
  713. cmp #21
  714. bcs +
  715.  
  716. inc 214
  717. inc 214
  718. inc 214
  719. jsr 58732
  720. jsr old'rom'patch
  721. jmp --
  722. + jsr fix'side
  723. pla
  724. sta 211
  725. pla
  726. sta 214
  727. jmp 58732
  728.  
  729.  
  730. q4 lda 209
  731. clc
  732. adc #40
  733. sta 251
  734. lda #0
  735. adc 210
  736. sta 252
  737. lda 243
  738. clc
  739. adc #40
  740. sta 253
  741. lda 244
  742. adc #0
  743. sta 254
  744. lda parms+3
  745. sta (251),y
  746. lda parms+12
  747. sta (253),y
  748. iny
  749. lda parms+4
  750. sta (251),y
  751. lda parms+13
  752. sta (253),y
  753. iny
  754. lda parms+5
  755. sta (251),y
  756. lda parms+14
  757. sta (253),y
  758. dey
  759. dey
  760. lda 251
  761. clc
  762. adc #40
  763. sta 251
  764. lda #0
  765. adc 252
  766. sta 252
  767. lda 253
  768. clc
  769. adc #40
  770. sta 253
  771. lda 254
  772. adc #0
  773. sta 254
  774. lda parms+6
  775. sta (251),y
  776. lda parms+15
  777. sta (253),y
  778. iny
  779. lda parms+7
  780. sta (251),y
  781. lda parms+16
  782. sta (253),y
  783. iny
  784. lda parms+8
  785. sta (251),y
  786. lda parms+17
  787. sta (253),y
  788. dey
  789. dey
  790. rts
  791.  
  792. fix'side lda #19
  793. jsr chrout
  794. jsr old'rom'patch
  795.  
  796. - ldy #0
  797. lda (209),y
  798. tax
  799. lda (243),y
  800.  
  801. ldy #39
  802. sta (243),y
  803. txa
  804. sta (209),y
  805.  
  806. lda 214
  807. cmp #24
  808. beq +
  809. inc 214
  810. jsr 58732
  811. jsr old'rom'patch
  812. jmp -
  813.  
  814. + lda #21
  815. sta 214
  816. jsr 58732
  817. jsr old'rom'patch
  818.  
  819. lda 209
  820. clc
  821. adc #120
  822. sta 251
  823. lda #0
  824. adc 210
  825. sta 252
  826. lda 243
  827. clc
  828. adc #120
  829. sta 253
  830. lda #0
  831. adc 244
  832. sta 254
  833.  
  834.  
  835. ldy #39
  836. - lda (209),y
  837. sta (251),y
  838. lda (243),y
  839. sta (253),y
  840. dey
  841. bpl -
  842. rts
  843.  
  844. brancher lda #0
  845. sta flag
  846. jsr get'string
  847. sta temp
  848. - jsr getin
  849. beq -
  850.  
  851. ldy #0
  852. - cmp ($22),y
  853. bne +
  854. iny
  855. tya
  856. clc
  857. adc #48
  858. sta 631
  859. lda #9
  860. sta 198
  861. rts
  862. + iny
  863. cpy temp
  864. bne -
  865. beq --
  866.  
  867. bput jsr get'strin